Field of the Invention
This invention relates generally to the field of computer processors. More particularly, the invention relates to an apparatus and method for texture space shading and reconstruction for ray tracing.
Description of the Related Art
Ray tracing is a graphics processing technique for generating an image by traversing the path of each light ray through pixels in an image plane and simulating the effects of its incidence upon different objects. Following traversal calculations, each ray is typically tested for intersection with some subset of the objects in the scene. Once the nearest object has been identified, the incoming light at the point of intersection is estimated, the material properties of the object are determined, and this information is used to calculate the final color of the pixel.
Ray tracing can generate extremely realistic images, but ray tracing techniques are costly in memory, computations, and power since billions of rays need to be traced and shaded to render a single image. With an insufficient number of rays, rendering is faster but the images are noisy due to the random nature of the sampling. Therefore, in offline rendering, advanced image denoising filters are commonly used to remove sampling noise. Most filters operate in screen space on sample data recorded during rendering. High-quality real-time ray tracing cannot realistically become a reality until such denoising filters are efficient enough for real-time implementations on graphics processing units (GPUs) or central processing units (CPUs).
However, existing techniques take seconds, or even minutes per frame, and typically require several full-screen auxiliary buffers to guide the reconstruction process. In addition, due to an underlying assumption of noise-free guide images, these approaches struggle with camera effects such as defocus and motion blur. Another challenge for image-space filters is visibility discontinuities, which occur, for example, at object boundaries where samples from the foreground and background mix. A lot of the complexity in existing filters comes from trying to filter across such discontinuities while preserving sharp edges and other image features. Previous research has attempted to address some of these limitations by filtering directly in path space or object space. However, these methods require complex data structures and expensive queries (e.g. kNN-searches) to locate nearby samples in large 3D data sets.
With today's fast ray tracers such as Intel's Embree and NVIDIA's OptiX, and emerging hardware ray tracing on the horizon, reasonably complex scenes can be rendered in real time; however, only at very limited sampling budgets (e.g. 8 or 16 primary rays per pixel). Consequently, fast and high-quality filtering solutions are needed.
We describe a novel approach for sampling and filtering, which allows more efficient implementation, reuse of results, limited memory footprint, and separate handling of camera effects. The approach can be used today for near real-time previsualization of ray traced scenes, or implemented in future hardware/software on GPUs.